package 迭代器;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
    Iterable是Collection的父接口,该接口中包含了所需的Iterator(迭代器)
 */
public class IterableDemo02 {
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add("张三");
        col.add("张三");
        col.add("李四");
        col.add("王五");
        System.out.println(col);//[张三, 张三, 李四, 王五]

        //获取遍历迭代器
        Iterator it = col.iterator();
        /*
        Object o1 = it.next();
        System.out.println(o1);//返回的是已经获取的元素
        Object o2 = it.next();
        System.out.println(o2);
        Object o3 = it.next();
        System.out.println(o3);
        Object o4 = it.next();
        System.out.println(o4);
        //NoSuchElementException: 没有这个元素异常
        Object o5 = it.next();
        System.out.println(o5);*/

        //循环 - while()
        while(it.hasNext()){
            Object o = it.next();
            System.out.println(o);
            //删除元素 - 调用的是迭代器中的remove()
            it.remove();

            //删除元素 - 调用的是collection集合中的remove(Object)
            //出现问题: ConcurrentModificationException:并发修改异常
            //col.remove(o);
        }
        System.out.println(col);

        //第二个遍历迭代器
        Iterator it2 = col.iterator();
        while (it2.hasNext()){
            Object o = it.next();
            System.out.println(o);
            //col.remove(o);
        }


    }
}
